iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
自我挑戰組

清空我的最愛之前端筆記系列 第 2

[ Day 2 ] [ JS ] 產生大小寫字母、隨機字母、隨機 6 位密碼

  • 分享至 

  • xImage
  •  

今天想跟大家分享的是基礎的 JavaScript,會複習到 String 的一些方法。

String Methods

String.fromCharCode()

  • 作用:把 UTF-16 轉換成字符
  • 語法:String.fromCharCode(n1, n2, ..., nX)
  • 回傳值:字符 (string type)
let char = String.fromCharCode(65)
console.log(char) // A

String.fromCodePoint()

  • String.fromCharCode() 作用一樣,不同的是編碼為 Unicode
  • 無效則拋出 RangeError

charCodeAt()

  • 作用:把字串中指定的字符(用 index 表示)轉換成 UTF-16 code
  • 語法:string.charCodeAt(index)
  • index 若不是數字,會預設為 0
  • 回傳值:UTF-16 (0 ~ 65535)(number type),如果 index 無效則回傳 NaN
let texts = 'How are you?'
let charCode = texts.charCodeAt(1)
console.log(charCode) // 111

codePointAt()

  • charCodeAt() 作用一樣,不同的是編碼為 Unicode
  • 無效則回傳 undefined

今天的題目有三個,程式碼是連續的

Q1

產生 26 個大小寫字母

Sol

const upperChars = []
const lowerChars = []

// A ~ Z 的編碼是 65 ~ 90
for (let i = 65; i < 91; i++) {
  let char = String.fromCharCode(i)
  upperChars.push(char)
  lowerChars.push(char.toLowerCase())
}

結果
https://ithelp.ithome.com.tw/upload/images/20220916/20152534dXtgoAP9jv.png

Q2

產生隨機字母

Sol

// 先合併大小寫字母
const arr = upperChars.concat(lowerChars)  
let randomChar = arr[Math.floor(Math.random() * 52)]
console.log(randomChar) // A (隨機)

Q3

隨機產生 6 位密碼

Sol

// 先產生數字 0 ~ 9
const nums = []

for (let i = 0; i <= 9; i++) {
  nums.push(i)
}

// 合併大小寫字母與數字
const arr = upperChars.concat(lowerChars, nums)
const sixCodes = []
  
for (let i = 1; i <= 6; i++) {
  let randomCode = arr[Math.floor(Math.random() * 62)]
  sixCodes.push(randomCode)
}

console.log(sixCodes.join(''))  //  o748YK (隨機)

Demo

參考資料:MDN String.fromCharCode()String.fromCodePoint()charCodeAt()codePointAt()
文章同步更新於 medium


上一篇
[ Day 1 ] [ CSS ] 如何改變 Background Image 背景圖片的不透明度
下一篇
[ Day 3 ] [ CSS ] - Flexbox 與 absolute positioning
系列文
清空我的最愛之前端筆記16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言